In today's world users rely on computer or telecommunication networks to communicate with each other and/or to share resources. These networks are often built of hundreds or thousands of network devices, such as routers, switches, access control devices and the like. In modern computer or telecommunication networks, information (e.g., voice, video, data) is transferred as packet data. The processing of these packets has resulted in the creation of optimized network devices to deal with this form of data. Network processors have specific features or architectures that are provided to enhance and optimize packet processing within these networks.
In their different applications, network processors provide only limited space for storing data since large on-chip buffer space is expensive. However, external storage devices provide such cost efficient storage space. A key performance factor of a network processor is how efficiently the processor handles the data storage and retrieval mechanism from and to this external storage space.
Currently, there are many different applications available in this field. For example, the memory management of a network processor may allocate a fixed size memory space to each queue. The memory array of the external storage space is operated as circular buffer. The disadvantage in this application is, however, that it is expected that the queue length will never grow beyond a predetermined size.
In another application, the memory management of a network processor allocates segments as and when required from a list of pointers stored in the local memory. A linked list of these segments makes a protocol data unit and further a linked list of protocol data units makes a queue. This application has the advantage of using the available memory space efficiently. However, this application requires a large number of pointers to be used and this in turn requires a large local memory.